]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
windowManager: Check whether metaWindow is NULL after destroy animation
authorJonas Dreßler <verdre@v0yd.nl>
Sat, 24 Oct 2020 20:24:35 +0000 (22:24 +0200)
committerJonas Dreßler <verdre@v0yd.nl>
Sat, 21 Nov 2020 22:40:53 +0000 (23:40 +0100)
When logging out or terminating gnome-shell, mutter will unmanage all
open windows, triggering the window-close animation in gnome-shell and
very quickly after that emitting "kill-window-effects". That means we'll
call _destroyWindowDone() to cleanup our animation data, but at this
point the MetaWindow of the window is already gone, so we get an error
that get_meta_window() returns NULL.

Fix that by checking whether get_meta_window() returned NULL and if it
did, don't access the window.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2018

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1483>

js/ui/windowManager.js

index 8ea178153bf96cdbf9b51e676c1089b045036f00..afe45037aac6dd7c1de5826d469391b1a44eb0fe 100644 (file)
@@ -1614,7 +1614,7 @@ var WindowManager = class {
 
     _destroyWindowDone(shellwm, actor) {
         if (this._destroying.delete(actor)) {
-            let parent = actor.get_meta_window().get_transient_for();
+            const parent = actor.get_meta_window()?.get_transient_for();
             if (parent && actor._parentDestroyId) {
                 parent.disconnect(actor._parentDestroyId);
                 actor._parentDestroyId = 0;